﻿using System;
using ControleRepresentante.Common;
using ControleRepresentante.Migration.Models;
using ControleRepresentante.Migration.Repositories;

namespace ControleRepresentante.Migration.Steps
{
    internal class ProdutoMigrateStep : MigrationStepBase
    {
        public override void Migrate(Guid representanteId, MigrationStatus migrationStatus, ControleRepresentanteRepository controleRepresentanteRepository, ZTRepository ztRepository, Guid userId)
        {
            migrationStatus.CurrentStep = "Migrate Produtos";

            int total = ztRepository.GetTotalProdutos();

            int index = 0;
            ztRepository.GetProdutos().ExecuteBatch(50000, ztProdutos =>
            {
                foreach (ZTProduto ztProduto in ztProdutos)
                {
                    Guid pedidoId = GetPedidoId(ztProduto.IdPedido);
                    controleRepresentanteRepository.CreateProduto(pedidoId, ztProduto.Codigo, ztProduto.Descricao, ztProduto.PrecoUnitario, ztProduto.Quantidade);
                    migrationStatus.SetCurrentProgress(++index, total);
                }
            });
        }
    }
}